//
// Description: 829. 模拟队列
// Created by Loading on 2022/7/16.
//

#include <bits/stdc++.h>

using namespace std;

constexpr int N = 1e5 + 10;

int q[N], hh, tt = -1;

// 向队尾插入元素
void push(int x) {
    q[++tt] = x;
}

// 弹出队头元素
void pop() {
    hh++;
}

// 判断队列是否为空
bool empty() {
    return tt < hh;
}

// 查询队头元素
int query() {
    return q[hh];
}

int main() {
    int M;
    cin >> M;
    while (M--) {
        string op;
        cin >> op;
        if (op == "push") {
            int x;
            cin >> x;
            push(x);
        } else if (op == "pop") {
            pop();
        } else if (op == "empty") {
            if (empty()) {
                cout << "YES" << endl;
            } else {
                cout << "NO" << endl;
            }
        } else if (op == "query") {
            cout << query() << endl;
        }
    }

    return 0;
}
